package Runde3;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println("Gruppe 144 - Runde 3 - Testfaelle:");
		
		System.out.println();
		System.out.println("Erstelle Polygon-Variable \"poly\" ... (ohne Instanz)\n");
		Polygon poly;
		System.out.print("Instanziere poly als Rechteck und hole Kantenanzahl, Umfang und Flaeche ... ");
		poly = new Rectangle(2,1);
		polyReport(poly);
		System.out.print("Instanziere poly als Quadrat und hole Kantenanzahl, Umfang und Flaeche ... ");
		poly = new Square(3);
		polyReport(poly);
		System.out.print("Instanziere poly als Dreieck und hole Kantenanzahl, Umfang und Flaeche ... ");
		poly = new Triangle(1,1.5,2);
		polyReport(poly);
		System.out.print("Instanziere poly als gleichseitiges Dreieck und hole Kantenanzahl, Umfang und Flaeche ... ");
		poly = new EquilateralTriangle(3);
		polyReport(poly);
		
		System.out.println();
		System.out.println("Erstelle Rechteck-Variable \"rect\" ... (ohne Instanz)\n");
		Rectangle rect;
		System.out.print("Instanziere rect als Rechteck und hole Kantenanzahl, Umfang und Flaeche ... ");
		rect = new Rectangle(2,1);
		polyReport(rect);
		System.out.print("Instanziere rect als Quadrat und hole Kantenanzahl, Umfang und Flaeche ... ");
		rect = new Square(2);
		polyReport(rect);
		System.out.print("Skaliere rect als Quadrat um Faktor 2 ... ");
		rect.scale(2);
		polyReport(rect);
		//rect  = new Triangle(3,4,5); //Unmoeglich, Triangle ist kein Rechteck
		//rect  =  new EquilateralTriangle(9); //Unmoeglich, EquilateralTriangle ist kein Rechteck
		
		System.out.println();
		System.out.println("Erstelle ScalablePolygon-Variable \"scal\" ... (ohne Instanz)\n");
		ScalablePolygon scal;
		System.out.print("Instanziere scal als Rechteck und hole Kantenanzahl, Umfang und Flaeche ... ");
		scal = new Rectangle(2,1);
		polyReport(scal);
		System.out.print("Skaliere scal als Quadrat um Faktor 2 ... ");
		scal.scale(2);
		polyReport(rect);
		System.out.print("Instanziere scal als gleichseitges Dreieck und hole Kantenanzahl, Umfang und Flaeche ... ");
		scal = new EquilateralTriangle(9);
		polyReport(scal);
		//scal = new Triangle(1,1.5,2); //Triangle ist nich skalierbar
		
		System.out.println();
		System.out.println("Erstelle RegularPolygon-Variable \"regpol\" ... (ohne Instanz)\n");
		RegularPolygon regpol;
		System.out.print("Erstelle ein Quadrat mit Laenge 4, setze dann aber auf 5 und gebe die Werte aus ... ");
		regpol = new Square(4);
		regpol.set(5);
		polyReport(regpol);
		System.out.print("Und nun ein gleichseitiges Dreieck mit denselben Werten ... ");
		regpol = new EquilateralTriangle(4);
		regpol.set(5);
		polyReport(regpol);
		//regpol = new Rectangle(2,1); //Rectangle hat nicht automatisch gleichlange Seiten
		
		System.out.println();
		System.out.print("Erstelle ein (ungleichseitges) Dreieck ...");
		Triangle tri = new Triangle(3,4,5);
		polyReport(tri);
		System.out.print("Setze Seitenlaengen jeweils einzeln neu und gebe es dann wieder aus ...");
		tri.setA(13);
		tri.setB(14);
		tri.setC(15);
		polyReport(tri);
		//tri = new Rectangle(2,1); //Rectangle ist kein (ungleichseitges) Dreieck
		
		
	}
	
	public static void polyReport(Polygon pol){
		System.out.println("\n\tTyp: \"" + pol.getClass().getSimpleName() + "\", Edges: " + pol.edges() + ", Area: " + pol.area() + ", Perimeter: " + pol.perimeter() + "\n");
	}
}
